/*
 * @Description:
 * @Author: william
 * @Date: 2025-08-29 14:58:52
 * @LastEditors: william
 * @LastEditTime: 2025-09-22 18:26:55
 */
// 设备上下线事件记录
import { scheduler } from '@/utils/scheduler.js'

export const useDeviceConnectEventStore = defineStore(
  'device-connect-event',
  () => {
    /**
     * 存储的是 DeviceConnectEvent 对象列表
     */
    const eventList = ref([])

    watch(
      () => eventList.value,
      async (nv, ov) => {
        console.log('eventList', nv, ov)
        // if (nv.length) {
        //   const { code } = await g_api.user.apiCheckNetwork()
        //   if (code !== 200) return
        //   // 上传设备在线状态记录
        //   g_api.device
        //     .apiUploadDeviceOnlineRecord({
        //       recordList: nv.map(item => ({
        //         sn: item.sn,
        //         onlineTime: item.type === 'connected' ? item.timestamp : '',
        //         offlineTime: item.type === 'disconnected' ? item.timestamp : '',
        //         createTime: item.timestamp
        //       })),
        //       showToast: false
        //     })
        //     .then(r => {
        //       eventList.value = []
        //     })
        // }
      },
      {
        deep: true
      }
    )

    const startDeviceConnectScheduler = (time = 1000 * 10) => {
      // 增加设备事件记录数据上传任务
      scheduler.schedule(
        '设备事件记录数据上传定时任务',
        async () => {
          console.log('执行设备事件记录数据上传定时任务')
          const { code } = await g_api.user.apiCheckNetwork()
          if (code !== 200) return
          
          if (eventList.value.length > 0) {
            g_api.device.apiUploadDeviceOnlineRecord({
              recordList: eventList.value,
              showToast: false
            })
          }
        },
        time
      ) // 每30分钟执行一次
    }
   

    /**
     * 增加新的时间日志
     * @param {DeviceConnectEvent} eventItem 事件
     */
    const addNewEvent = async eventItem => {
      console.log(eventItem)
      eventList.value.push(eventItem)
      // // 上传设备状态（在线状态、运行状态）
      // const { code } = await g_api.user.apiCheckNetwork()
      // if (code !== 200) return
      // g_api.device.apiUploadDeviceStatus({
      //   sn: eventItem.sn,
      //   workStatus: null,
      //   onlineStatus: eventItem.status === 'connected' ? 1 : 0,
      //   showToast: false
      // })
    }

    return {
      eventList,
      addNewEvent,
      startDeviceConnectScheduler
    }
  },
  {
    // persist: true // 配置持久化
    persist: [
      {
        key: 'device-connect-event-store', // 自定义存储键名
        // storage: localStorage, // 默认是 localStorage,可以改为 sessionStorage,可全局配置
        pick: ['eventList']
      }
    ]
  }
)

export function useOutsideDeviceConnectEventStore() {
  return useDeviceConnectEventStore(g_store)
}
